Qué es Quarto®?


Quarto® es un nuevo sistema de publicación científica y técnica de código abierto construido sobre Pandoc 1

Mezcla texto narrativo y código para producir resultados con un formato elegante en documentos, tableros interactivos, páginas web, publicaciones de blogs, libros y más.

Es independiente del lenguaje R (incluso trabaja con otros lenguajes como Python y Julia).

Comunicar como parte de programar


Ecosistema de RMarkdown


RMarkdown en Rstudio

  • Desarrollo del paquete knitr desde 2011
  • Desarrollo de RMarkdown desde 2014 (rmarkdown + pandoc)
  • 10 años de experiencia en knitr + rmarkdown se volcaron al desarrollo de Quarto.

Como funciona Quarto?

Como funciona Quarto?

Quarto usa knitr o jupyter como motor para ejecutar código y generar una salida temporal (.md).

El archivo temporal se procesa mediante los filtros Lua de Pandoc y Quarto + Bootstrap CSS para HTML o LaTeX para PDF y se convierte a un formato de salida final.

Los filtros Lua escritos por desarrolladores de R/Python/Julia son intercambiables entre formatos.

Quarto además incluye soporte nativo para Observable JS, un conjunto de mejoras a JavaScript básico creado por Mike Bostock (también autor de D3).

Observable JS se distingue por su tiempo de ejecución reactivo, que es especialmente adecuado para la exploración y el análisis de datos interactivos.

Ejemplo interactivo con Observable JS


Conversor de temperatura de ℃ a ℉


Celsius = y Fahrenheit = ℉.


```{ojs}
viewof temp = Inputs.range([0, 99], {step: 1, value: 0, label: htl.html`Temp. ℃`})
```
Celsius = \${d3.format(".0f")(temp)}℃ y Fahrenheit = \${d3.format(".1f")(temp \* 9/5 + 32)}℉.

Entonces, ¿qué es Quarto?

Quarto es una interfaz de línea de comandos (CLI) que representa formatos de texto sin formato (.qmd, .rmd, .md) o formatos mixtos (.ipynb/Jupyter notebook) en informes estáticos PDF/Word/HTML, libros, sitios web, presentaciones y más.

cballejo$ quarto --help

  Usage:   quarto
  Version: 1.6.39

  Description:
    Quarto CLI

  Options:
    -h, --help     - Show this help.                            
    -V, --version  - Show the version number for this program.  

  Commands:
    render          [input] [args...]   - Render input file(s) to various document types.            
    preview         [file] [args...]    - Render and preview a document or website project.          
    serve           [input]             - Serve a Shiny interactive document.                        
    create-project  [dir]               - Create a project for rendering multiple documents          
    convert         <input>             - Convert documents to alternate representations.            
    pandoc          [args...]           - Run the version of Pandoc embedded within Quarto.          
    run             [script] [args...]  - Run a TypeScript, R, Python, or Lua script.                
    install         <type> [target]     - Installs an extension or global dependency.                
    publish         [provider] [path]   - Publish a document or project. Available providers include:
    check           [target]            - Verify correct functioning of Quarto installation.         
    help            [command]           - Show this help or the help of a sub-command.    

Software Quarto


  • El sitio web de Quarto es https://quarto.org/

  • La versión actual es 1.6.39 (Windows) del 27/11/2024

  • La guía oficial se puede encontrar en https://quarto.org/docs/guide/

  • RStudio Desktop incluye una versión de Quarto en su instalación desde la versión 2022.07.01 pero conviene actualizarlo de forma independiente

Otras características

  • Tiene múltiples formatos modernos de salidas unificado la funcionalidad de muchos paquetes del ecosistema R Markdown (rmarkdown, bookdown, distill, xaringan, etc.)
  • Implementa funciones más atractivas y útiles en todos los productos: pestañas, resaltado de sintaxis, diagramas, etc.
  • Se pueden renderizar los documentos viejos .rmd (RMarkdown) o .ipynb (cuadernos jupyter de python) con Quarto.
  • Viene incluido en otros editores como VS Code
  • Soporta htmlwidgets en R y Jupyter widgets para Python/Julia además de Observable JS

Por qué usar Quarto en lugar de RMarkdown?

  • Quarto no es muy diferente a RMarkdown, más bien es un RMarkdown de nueva generación (next-generation)
  • Posee mejor accesibilidad y funciones más completas listas para usar
  • RMarkdown aún tiene soporte pero todas las novedades y mejoras se están desarrollando solo para Quarto
  • Si en el futuro incorporas algún otro lenguaje de programación/análisis podes seguir utilizandolo
  • Podes elegir otros editores y Quarto seguirá funcionando

El universo de Quarto es enorme

Anatomia de un .qmd

Al igual que los .Rmd de RMarkdown el archivo fuente de Quarto es de texto plano

Tiene una cabecera YAML con metadatos

format: html
engine: knitr
format: html
engine: jupyter

Suele tener código incluido

```{r}
library(dplyr)
mtcars |> 
  group_by(cyl) |> 
  summarize(mean = mean(mpg))
```
```{python}
from siuba import *
(mtcars
  >> group_by(_.cyl)
  >> summarize(avg_mpg = _.mpg.mean()))
```

Y texto narrativo

# Cabecera 1
Esto es texto en **negrita**, esto en *itálica* y esta otra una 
![imagen](image.png){fig-alt="Texto alternativo para esta imagen"}.

Ejemplo de un .qmd

Los archivos .qmd responden estructuralmente al modelo de programación literaria (Literate programming)


---
title: "ggplot2"
date: "18/04/2024"
format: html
---

## Calidad del aire

Esta es la relación entre la temperatura y el nivel de ozono.

```{r}
#| label: fig-calidad_aire
library(ggplot2)
ggplot(airquality, aes(Temp, Ozone)) + 
  geom_point() + 
  geom_smooth(method = "loess"
)
```

Metadatos: YAML


  • Los metadatos que se definen en el encabezado YAML que todos los archivos .qmd tienen son procesados en muchas etapas del renderizado y puede influir en el documento final de varias formas.
  • Siempre se colocan al principio del documento y lo lee Pandoc, Quarto y knitr.
  • En su recorrido, la información que contiene suele afectar el código, el contenido y el proceso de renderizado.
  • Muchas de las opciones de código YAML para Quarto se pueden encontrar en su documentación

Texto y otros elementos


  • Quarto se basa en Pandoc y utiliza su variación de Markdown como sintaxis para documentos.
  • El Markdown de Pandoc es una versión ampliada y ligeramente revisada de la sintaxis Markdown de John Gruber.
  • Markdown es un lenguaje de marcas sencillo diseñado para ser fácil de escribir y, lo que es más importante, fácil de leer.
  • Es el mismo que se utiliza en el formato anterior de RMarkdown (archivos .Rmd)

Código

  • El código se puede insertar a través de chunks (fragmentos) en distintos lenguajes
```{r}
#| Aquí van los metadatos con las opciones de ejecución

Aquí va el código
```
  • Las opciones de ejecución del código incluido dentro de estos fragmentos se realiza mediante metadatos con el formato #|
  • Se pueden definir opciones de salida, figura, procesado, etc. Ver guía.
```{r}
radio <- 5
```

(El radio del circulo es `{r} radio`). El radio del circulo es 5

Algunos ejemplos para visualizar